#include "Server.h"

int main(int argc, char const *argv[])
{
  // 判断输入是否正确
  if (argc != 3)
  {
    printf("输入的格式错误 %s ip port\n", argv[0]);
    exit(1);
  }

  // 初始化 TCP 服务器
  int sock = tcp_server_init(argv[1], atoi(argv[2]));

  // 声明线程号
  pthread_t tid_recv;
  pthread_t tid_send;

  // 创建线程
  pthread_create(&tid_recv, NULL, pthread_recv, (void *)&sock);
  pthread_create(&tid_send, NULL, pthread_send, (void *)&sock);

  // 等待线程结束

  // 当接收线程结束时 发送线程如何结束

#if 0   // 方法一 让 发送线程为分离态
    pthread_join(tid_recv , NULL);
    pthread_detach(tid_send);

    printf("服务器结束\n");
#elif 1 // 方法二 获取线程返回值 然后判是否为断开连接 如果是 则 终止发送线程
  // 获取 接收线程的返回值
  void *rect_return_ptr = NULL;
  pthread_join(tid_recv, &rect_return_ptr);
  int rect_return_val = *((int *)rect_return_ptr);

  if (1 == rect_return_val)
  {
    // 终止线程 终止发送线程
    printf("发送线程结束");
    pthread_cancel(tid_send);
  }

#endif
  printf("服务器结束\n");
  // 关闭服务器
  tcp_server_close();
  return 0;
}
